package cn.fl.system.service;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cmm.mid.core.framework.dto.DataResultDTO;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import cmm.comm.facade.upload.condition.SysUlFilesRecQueryCondition;
import cmm.comm.facade.upload.dto.SysUlFilesRecDTO;
import cmm.mid.core.framework.page.Pager;
import cn.cmm.base.framework.exception.BaseException;
import cn.fl.system.vo.SysUlFilesRecVO;
import net.sf.json.JSONArray;

/**
 * @Description: 文件上传记录表 客户端服务层接口
 * 业务层方法名称前缀：
 * 新增：add*
 * 删除：remove*
 * 修改：modify*
 * 批量：batch*
 * 查询对象：select* get*
 * 查询集合：search*
 */
public interface ISysUlFilesRecService {
	
	/**
	 * 文件上传接口
	 * @return  JSONArray[{filePath:文件上传成功后访问路径 ,fileNm:原始文件名}]
	 * @throws BaseException
	 */
	public JSONArray fileUpload(String filePath,MultipartHttpServletRequest multipartRequest,String uploadSignStr) throws BaseException;
	/**
	 * 文件下载接口,如果有ID则使用ID获取文件下载,否则按其它参数下载
	 * @throws BaseException
	 */
	public void fileDownload(String id, String fileName, String filePath,HttpServletRequest request,HttpServletResponse response) throws BaseException;
	
	/**
	 * 获取唯一对象
	 * @param id 主键
	 * @return 对象DTO
	 */
	public SysUlFilesRecVO selectById(Long id)throws BaseException;
	
	/**
	 * 新增
	 * @param entity
	 * @return
	 */
    public Long add(SysUlFilesRecVO entity) throws BaseException;

    /**
     * 删除
     * @param id
     * @return
     */
    //public boolean removeById(Long id)throws BaseException;
    
    /**
     * 批量删除
     * @param ids
     * @return
     */
    public boolean removeByIds(List<Long> ids)throws BaseException;

    /**
     * 修改
     * @param entity
     * @return
     */
    public boolean modify(SysUlFilesRecVO entity)throws BaseException;

    /**
     * 分页查询所有
     *  zhangtong
     * @param page
     * @return
     */
    public Pager searchListPage(Pager page)throws BaseException;
    
    /**
     * 不分页查询所有
     * @param page
     * @return
     */
    public List<SysUlFilesRecVO> searchList(SysUlFilesRecQueryCondition condition)throws BaseException;
    /**
     * 根据条件删除上传文件信息
     * @param qc
     * @throws BaseException
     */
	public boolean removeByCondition(SysUlFilesRecQueryCondition qc)throws BaseException;
    
    /**
     * 加入附件统一使用接口
     * @return 是否成功
     * @throws BaseException
     */
    public Boolean addAttchmnt(String id, String attchmnt,
			String cfgCd, String cfgDtlCd, String tabNm, 
			String fileRem, String procInstId, String taskId, Boolean isDelOldData, String cfgOrgCd)throws BaseException;
    
    /**
     * 加入附件统一使用接口(只传一个)
     * @return 是否成功
     * @throws BaseException
     */
    public Boolean addAttchmntByOne(String id, String attchmnt,
			String cfgCd, String cfgDtlCd, String tabNm, 
			String fileRem, String procInstId, String taskId, Boolean isDelOldData, String cfgOrgCd)throws BaseException;
    
    /**
     * 批量新增文件记录
     * @param list 附件集合
     * @param isDel 是否删除老的记录
     * @return boolean
     * @throws BaseException
     */
    public Boolean addSysUlFilesRecListWithIsDel(List<SysUlFilesRecDTO> list, boolean isDel)throws BaseException;
    /**
     * @param filePath
     * @param fileList map参数fileName,data
     * @return
     * @throws BaseException
     * 2018年5月25日 
     * lxb
     */
    public JSONArray fileUploadB64(String filePath, List<Map> fileList)
			throws BaseException;

    /**
     * 批量新增附件信息
     * @param sysUlFilesRecVOs
     * @return
     * @throws BaseException
     */
    public boolean addSysUlFilesResList(List<SysUlFilesRecVO> sysUlFilesRecVOs) throws BaseException ;


    /**
     * 通过QC，修改文件信息
     * @param condition 查询条件
     * @param mdfMap 修改参数MAP
     * @return
     * @throws BaseException
     */
    public DataResultDTO updateSysUlFilesRecByQC(SysUlFilesRecQueryCondition condition,Map<String, Object> mdfMap) throws BaseException;
	/***
	 *
	 * @Description 获取文件上传数据集合
	 * @Author shijb
	 * @Date 2018/9/3 16:37
	 * @Param 	sysCd	系统编码
	 * @Param	orgCd	组织编码
	 * @Param	cfgCd	配置编码
	 * @Param	pkIdList	数据主键Id列表
	 * @return java.util.Map<java.lang.String,java.util.List<cn.fl.system.vo.SysUlFilesRecVO>>
	 **/
	Map<String, List<SysUlFilesRecVO>> getMultiList(String sysCd, String orgCd, String cfgCd,List<String> pkIdList) throws BaseException;

	/**
	 * 批量修改资料信息
	 * @param list
	 */
	public void modifySysUlFilesRecList(List<SysUlFilesRecVO> list) throws BaseException;


    /**
     * 加入附件统一使用接口(只传一个) 传入sysCd
     * @return 是否成功
     * @throws BaseException
     */
    public Boolean addAttchmntByOneSys(String id, String attchmnt,
                                    String cfgCd, String cfgDtlCd, String tabNm,
                                    String fileRem, String procInstId, String taskId, Boolean isDelOldData, String cfgOrgCd, String sysCo)throws BaseException;
}
